// paymentwidget.cpp
#include "paymentwidget.h"
#include "ui_paymentwidget.h"
#include "DatabaseManager.h"
#include <QRadioButton>
#include <QPixmap>
#include <QDebug>
#include <QMessageBox>

paymentWidget::paymentWidget(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::paymentWidget),
    m_hasAlipayQrCode(false),
    m_hasWechatQrCode(false)
{
    ui->setupUi(this);
//    // 手动设置测试值，验证控件是否可用
//        ui->amountLabel->setText("测试金额");
//        ui->dateLabel->setText("测试时间");
//        qDebug() << "paymentWidget 构造，验证控件："
//                 << "amountLabel 文本：" << ui->amountLabel->text()
//                 << "dateLabel 文本：" << ui->dateLabel->text();

    // 设置窗口标题
    setWindowTitle("支付页面");
    // 初始化计时器，设置超时时间（这里模拟支付需要 3 秒，可根据实际调整）
        m_timer = new QTimer(this);
        m_timer->setInterval(3000);  // 3000 毫秒 = 3 秒
        connect(m_timer, &QTimer::timeout, this, &paymentWidget::onTimerTimeout);

    // 连接支付方式选择信号
    connect(ui->alipayRadio, &QRadioButton::toggled, this, &paymentWidget::on_alipayRadio_toggled);
    connect(ui->wechatRadio, &QRadioButton::toggled, this, &paymentWidget::on_wechatRadio_toggled);
    // 连接信号和槽（如果需要）
        //connect(ui->payButton, &QPushButton::clicked, this, &paymentWidget::on_payButton_clicked);
    // 初始化显示
    updateQrCodeDisplay();
}

paymentWidget::~paymentWidget()
{
    delete ui;
}

void paymentWidget::setOrderInfo(const QString &orderId, double amount, const QString &date)
{
    m_orderId=orderId;
    ui->orderIdLabel_2->setText( orderId);

    // 设置金额显示，保留两位小数
    QString amountText = QString("¥%1").arg(amount, 0, 'f', 2);
    ui->amountLabel_2->setText( amountText);

    // 设置日期显示
    ui->dateLabel_2->setText( date);
}

void paymentWidget::setAlipayQrCode(const QString &imagePath)
{
    m_alipayQrCode.load(imagePath);
    m_hasAlipayQrCode = !m_alipayQrCode.isNull();

    if (m_hasAlipayQrCode) {
        qDebug() << "支付宝二维码加载成功";
    } else {
        qDebug() << "支付宝二维码加载失败:" << imagePath;
    }

    // 如果当前选中支付宝，更新显示
    if (ui->alipayRadio->isChecked()) {
        updateQrCodeDisplay();
    }
    qDebug() << "setAlipayQrCode";
}

void paymentWidget::setWechatQrCode(const QString &imagePath)
{
    m_wechatQrCode.load(imagePath);
    m_hasWechatQrCode = !m_wechatQrCode.isNull();

    if (m_hasWechatQrCode) {
        qDebug() << "微信支付二维码加载成功";
    } else {
        qDebug() << "微信支付二维码加载失败:" << imagePath;
    }

    // 如果当前选中微信支付，更新显示
    if (ui->wechatRadio->isChecked()) {
        updateQrCodeDisplay();
    }
    qDebug() << "setWechatQrCode";
}

void paymentWidget::on_alipayRadio_toggled(bool checked)
{
    if (checked) {
        updateQrCodeDisplay();
        m_selectedPaymentMethod = "支付宝";
    }
}

void paymentWidget::on_wechatRadio_toggled(bool checked)
{
    if (checked) {
        updateQrCodeDisplay();
        m_selectedPaymentMethod = "微信支付";
    }
}

void paymentWidget::updateQrCodeDisplay()
{
    if (ui->alipayRadio->isChecked()) {
        if (m_hasAlipayQrCode) {
            // 调整图片大小以适应显示区域
            QPixmap scaledPixmap = m_alipayQrCode.scaled(
                ui->label->size(),
                Qt::KeepAspectRatio,
                Qt::SmoothTransformation
            );
            ui->label->setPixmap(scaledPixmap);
            ui->label->setAlignment(Qt::AlignCenter);
            ui->label_2->setText("请使用支付宝扫描二维码完成支付:");
        } else {
            ui->label->setText("支付宝二维码加载失败");
            ui->label->setAlignment(Qt::AlignCenter);
        }
    } else if (ui->wechatRadio->isChecked()) {
        if (m_hasWechatQrCode) {
            // 调整图片大小以适应显示区域
            QPixmap scaledPixmap = m_wechatQrCode.scaled(
                ui->label->size(),
                Qt::KeepAspectRatio,
                Qt::SmoothTransformation
            );
            ui->label->setPixmap(scaledPixmap);
            ui->label->setAlignment(Qt::AlignCenter);
            ui->label_2->setText("请使用微信扫描二维码完成支付:");
        } else {
            ui->label->setText("微信支付二维码加载失败");
            ui->label->setAlignment(Qt::AlignCenter);
        }
    } else {
        // 如果没有选中任何支付方式
        ui->label->setText("请选择支付方式");
        ui->label->setAlignment(Qt::AlignCenter);
        ui->label_2->setText("请选择支付方式后扫描二维码完成支付:");
    }
}

// 在 paymentwidget.cpp 中添加信号发射
void paymentWidget::onPaymentSuccess()
{
    // 处理支付成功的逻辑...
    qDebug() << "Payment success! Order ID:" << m_orderId << ", Method:" << m_selectedPaymentMethod;
    // 发射支付成功信号
    emit paymentSuccess(m_orderId, m_selectedPaymentMethod);

    // 关闭对话框
    accept();
}


void paymentWidget::on_payButton_clicked()
{
    if (m_selectedPaymentMethod.isEmpty()) {
            QMessageBox::warning(this, "提示", "请先选择支付方式！");
            return;
        }

        ui->statusLabel->setText("支付中...");
        m_timer->start();  // 启动计时器，模拟支付耗时
}

void paymentWidget::on_cancelButton_clicked()
{
    reject();  // 关闭支付窗口，取消支付
}

void paymentWidget::onTimerTimeout()
{
    m_timer->stop();  // 停止计时器
    ui->statusLabel->setText("支付完成");
    // 发射支付成功信号，通知外部支付已完成
    emit paymentSuccess(m_orderId, m_selectedPaymentMethod);
    QMessageBox::information(this, "提示", "支付成功！");
    accept();  // 关闭支付窗口，标记支付流程正常完成
}
